  import { httpConfig } from '@/config'
  
  /**
   * 格式化日期
   * @param {Date} date Date对象
   * @param {string} fmt 返回格式 'yyyy-MM-dd HH:mm:ss SSS q'
   */
  export const formatDateByDate = (date, fmt = 'MM-dd HH:mm') => {
    if (date instanceof Date) {
      let format = fmt;
      const o = {
        'M+': date.getMonth() + 1, // 月份
        'd+': date.getDate(), // 日
        'H+': date.getHours(), // 小时
        'm+': date.getMinutes(), // 分
        's+': date.getSeconds(), // 秒
        'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
        S: date.getMilliseconds(), // 毫秒
      };
      if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (`${date.getFullYear()}`).substr(4 - RegExp.$1.length));
      }
      Object.entries(o).forEach(([key, val]) => {
        if (new RegExp(`(${key})`).test(format)) {
          format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? val : `00${val}`.substr(`${val}`.length));
        }
      });
      return format;
    }
    return date;
  };
  
  // 格式化时间戳
  export const formatDate = (stamp, fmt = 'yy-MM-dd HH:mm') => {
    if (!stamp) {
      return '';
    }
    const date = new Date(+stamp * 1000);
    const resTime = formatDateByDate(date, fmt);
    return resTime;
  };
  
  // 外部图片
  export const uploadImg = (path, defaultPath) => {
    const head = httpConfig().ReadFile;
    if (path) {
      if (path.startsWith('http')) {
        return path;
      }
      return head + path;
    } else if (defaultPath) {
      return defaultPath;
    }
    return '/img/avater.jpg';
  };
  
  /**
   * 获取时间戳到当前还有多少天
   * @param {number} times 时间戳
   * @param {boolean} abs 是否取绝对值
   */
  export const deadTime = (times, abs) => {
    if (!times) {
      return '';
    }
    const s = times - (Date.now() / 1000);
    let d = Math.floor(s / 3600 / 24, 10);
    if (abs) {
      d = Math.abs(d);
    }
    return d;
  };
  
  
  /**
   * 文本复制
   * @param {String} string 要复制的文本
   */
  export const copyString = (string) => {
    const textarea = document.createElement('textarea');
    textarea.style.position = 'fixed';
    textarea.style.top = 0;
    textarea.style.left = 0;
    textarea.style.border = 'none';
    textarea.style.outline = 'none';
    textarea.style.resize = 'none';
    textarea.style.background = 'transparent';
    textarea.style.color = 'transparent';
  
    textarea.value = string;
    document.body.appendChild(textarea);
    textarea.select();
    try {
      document.execCommand('copy');
      Message.success('复制成功');
    } catch (err) {
      Message.error('复制失败');
    }
    document.body.removeChild(textarea);
  };

  export const myPlugin = {
    install(Vue) {
        // 格式化日期
        Vue.prototype.$formatDate = formatDate;
        Vue.prototype.$formatDateByDate = formatDateByDate;
        Vue.filter('formatDate', formatDate);
        // 到期时间
        Vue.prototype.$deadTime = deadTime;
        Vue.filter('deadTime', deadTime);
        // 图片
        Vue.filter('uploadImg', uploadImg);
        Vue.prototype.$uploadImg = uploadImg;
        // 复制文本
        Vue.prototype.$copyString = copyString;
        // 格式化金额
    }
  }